/*******************************************************************************
* Имя файла: fourTask.cpp
* Дата: 21-04-2024
* Разработчик: Андрей Подлегаев
* Группа: 315
* Факультет: ЦДО ТУСУР
* Лицензия: BSD
* Описание: Решение задач к лабораторной работе № 6 (ЦДО ТУСУР)
* *****************************************************************************/

#include "fourTask.h"

/* Реализация функции генерации вектора случайных чисел и размера */
std::vector<int> generatorVector()
{
  long seed = std::chrono::system_clock::now().time_since_epoch().count();
  std::default_random_engine rnd(seed);
  std::uniform_int_distribution<int> number(1, 100);

  std::vector<int> vec;
  for (size_t i{}; i < number(rnd); ++i) {
      vec.push_back(number(rnd));
    }
  return vec;
}

/* Реализация функции генерации списка случайных чисел и размера */
std::list<int> generatorList()
{
  long seed = std::chrono::system_clock::now().time_since_epoch().count();
  std::default_random_engine rnd(seed);
  std::uniform_int_distribution<int> number(1, 100);

  std::list<int> lst;
  for (size_t i{}; i < number(rnd); ++i) {
      lst.push_back(number(rnd));
    }
  return lst;
}

/* Реализация функции замены чётных элементов вектора на нечётные элементы списка */
std::vector<int> getResultVector(const std::vector<int>& vec, const std::list<int>& lst)
{
  std::vector<int> resultVector;

  auto iter = lst.begin();
  bool turnOnCounter{false};
  size_t sizeContainer;

  if (vec.size() >= lst.size()) {
      sizeContainer = lst.size() + 1;
    }
  else {
      sizeContainer = vec.size();
    }

  for (size_t i{}; i < sizeContainer; ++i) {
      if (i % 2) {
          resultVector.push_back(*iter);
          turnOnCounter = true;
        }
      else {
          resultVector.push_back(vec[i]);
        }
      if (turnOnCounter) {
          ++iter;
        }
    }
  return resultVector;
}
